998f3ca63f5a36540b65486249dc63f37deef2cc,plugins/org.eclipse.xtext.ui.core/src/org/eclipse/xtext/ui/core/editor/findrefs/FindReferencesHandler.java,EObjectResolver,exec,#XtextResource#,54

Before Change


		public java.lang.Void exec(XtextResource state) throws Exception {
			IParseResult parseResult = state.getParseResult();
			if (parseResult != null) {
				CompositeNode rootNode = parseResult.getRootNode();
				if (rootNode != null) {
					AbstractNode node = ParseTreeUtil.getCurrentOrFollowingNodeByOffset(rootNode, selection
							.getOffset());

After Change



		public IEObjectDescription exec(XtextResource state) throws Exception {
			IParseResult parseResult = state.getParseResult();
			if (parseResult != null && parseResult.getRootNode() != null) {
				AbstractNode node = ParseTreeUtil.getCurrentOrFollowingNodeByOffset(parseResult.getRootNode(),
						selection.getOffset());
				while (node != null) {
					if (node.getGrammarElement() instanceof CrossReference) {
						EObject referenceOwner = NodeUtil.getNearestSemanticObject(node);
						EReference eReference = GrammarUtil.getReference((CrossReference) node.getGrammarElement(),
								referenceOwner.eClass());
						try {
							List<EObject> linkedEObjects = linkingService.getLinkedObjects(referenceOwner, eReference,
									node);
							if (!linkedEObjects.isEmpty()) {
								IScope scope = scopeProvider.getScope(referenceOwner, eReference);
								return scope.getContentByEObject(linkedEObjects.get(0));
							} else {
								return null;
							}
						} catch (IllegalNodeException ex) {
							return null;